//父类：抽取人员共性属性与基础方法
public abstract class Person {
 // protected权限：子类可访问，跨包非子类不可访问
 protected String id;     // 人员编号（教师ID/学生ID）
 protected String name;   // 姓名
 protected String gender; // 性别

 // 父类含参构造：初始化共性属性
 public Person(String id, String name, String gender) {
     this.id = id;
     this.name = name;
     this.gender = gender;
 }

 // 抽象业务方法：打印工作单（教师→授课表，学生→选课表）
 public abstract void printWorksheet();

 // Getter方法（public：允许跨包访问属性值）
 public String getId() {
     return id;
 }

 public String getName() {
     return name;
 }

 public String getGender() {
     return gender;
 }
}